package labox.innovation.gameserver.geodata;

import java.util.logging.Logger;

import labox.innovation.config.Config;
import labox.innovation.gameserver.model.L2Object;
import labox.innovation.gameserver.model.Location;
import labox.innovation.gameserver.model.actor.instance.FuzePcInstance;
import labox.innovation.gameserver.pathfinding.Node;
import labox.innovation.util.Point2D;

/**
 *
 * @author  -Nemesiss-
 */
public interface GeoData {

	// Public Methods
	/**
	 * @param x
	 * @param y
	 * @return Geo Block Type
	 */
	public int getType(int x, int y);

	/**
	 * @param x
	 * @param y
	 * @return
	 */
	public String geoPosition(int x, int y);

	/**
	 * @param cha
	 * @param target
	 * @return True if cha can see target (LOS)
	 */
	public boolean canSeeTarget(L2Object cha, L2Object target) ;

	public boolean canSeeTarget(L2Object cha, Point2D worldPosition);

	public boolean canSeeTarget(int x, int y, int tx, int ty);

	/**
	 * @param x
	 * @param y
	 * @param z
	 * @param tx
	 * @param ty
	 * @param tz
	 * @param instanceId
	 * @return Last Location (x,y,z) where player can walk - just before wall
	 */
	public Location moveCheck(int x, int y, int tx, int ty);

	public boolean canMoveFromToTarget(int x, int y, int tx, int ty);

	public boolean hasGeo(int x, int y);

	public Node[] getNeighbors(Node n);
	
	public int getWidth();
	
	public int getHeight();
}
